home *** CD-ROM | disk | FTP | other *** search
/ TestDrive Windows 1993 Fall / TestDrive Windows 1993 Fall.iso / dbase / samples / codes.frg < prev    next >
Encoding:
Text File  |  1993-03-09  |  5.0 KB  |  248 lines

  1. * Program............: codes.FRG
  2. * Date...............: 3-09-93
  3. * Versions...........: dBASE IV, Report 2.0
  4. *
  5. * Notes:
  6. * ------
  7. * Prior to running this procedure with the DO command
  8. * it is necessary use LOCATE because the CONTINUE
  9. * statement is in the main loop.
  10. *
  11. *-- Parameters
  12. PARAMETERS gl_noeject, gl_plain, gl_summary, gc_heading, gc_extra
  13. ** The first three parameters are of type Logical.
  14. ** The fourth parameter is a string.  The fifth is extra.
  15. PRIVATE _peject, _wrap, ll_heading
  16. ll_heading = .F.
  17.  
  18. *-- Test for no records found
  19. IF EOF() .OR. .NOT. FOUND()
  20.    RETURN
  21. ENDIF
  22.  
  23. *-- turn word wrap mode off
  24. _wrap=.F.
  25.  
  26. IF _plength < (_pspacing * 4 + 1) + (_pspacing * 2 + 1) + 2
  27.    SET DEVICE TO SCREEN
  28.    DEFINE WINDOW gw_report FROM 7,17 TO 11,62 DOUBLE
  29.    ACTIVATE WINDOW gw_report
  30.    @ 0,1 SAY "Increase the page length for this report."
  31.    @ 2,1 SAY "Press any key ..."
  32.    x=INKEY(0)
  33.    DEACTIVATE WINDOW gw_report
  34.    RELEASE WINDOW gw_report
  35.    RETURN
  36. ENDIF
  37.  
  38. _plineno=0          && set lines to zero
  39. *-- NOEJECT parameter
  40. IF gl_noeject
  41.    IF _peject="BEFORE"
  42.       _peject="NONE"
  43.    ENDIF
  44.    IF _peject="BOTH"
  45.       _peject="AFTER"
  46.    ENDIF
  47. ENDIF
  48.  
  49. *-- Set-up environment
  50. ON ESCAPE DO Prnabort
  51. IF SET("TALK")="ON"
  52.    SET TALK OFF
  53.    gc_talk="ON"
  54. ELSE
  55.    gc_talk="OFF"
  56. ENDIF
  57. gc_space=SET("SPACE")
  58. SET SPACE OFF
  59. gc_time=TIME()      && system time for predefined field
  60. gd_date=DATE()      && system date  "    "    "     "
  61. gl_fandl=.F.        && first and last page flag
  62. gl_prntflg=.T.      && Continue printing flag
  63. gl_widow=.T.        && flag for checking widow bands
  64. gn_length=LEN(gc_heading)  && store length of the HEADING
  65. gn_level=2          && current band being processed
  66. gn_page=_pageno     && grab current page number
  67. gn_pspace=_pspacing && get current print spacing
  68.  
  69.  
  70. *-- Set up procedure for page break
  71. gn_atline=_plength - (_pspacing * 2 + 1)
  72. ON PAGE AT LINE gn_atline EJECT PAGE
  73.  
  74. *-- Print Report
  75.  
  76. PRINTJOB
  77.  
  78. IF gl_plain
  79.    ON PAGE AT LINE gn_atline DO Pgplain
  80. ELSE
  81.    ON PAGE AT LINE gn_atline DO Pgfoot
  82. ENDIF
  83.  
  84. DO Pghead
  85.  
  86. gl_fandl=.T.        && first physical page started
  87.  
  88. DO Rintro
  89.  
  90. *-- File Loop
  91. DO WHILE FOUND() .AND. .NOT. EOF() .AND. gl_prntflg
  92.    gn_level=0
  93.    *-- Detail lines
  94.    IF gl_summary
  95.       DO Upd_Vars
  96.    ELSE
  97.       DO __Detail
  98.    ENDIF
  99.    gl_widow=.T.         && enable widow checking
  100.    CONTINUE
  101. ENDDO
  102.  
  103. IF gl_prntflg
  104.    DO Rsumm
  105.    IF _plineno <= gn_atline
  106.       EJECT PAGE
  107.    ENDIF
  108. ELSE
  109.    DO Rsumm
  110.    DO Reset
  111.    RETURN
  112. ENDIF
  113.  
  114. ON PAGE
  115.  
  116. ENDPRINTJOB
  117.  
  118. DO Reset
  119. RETURN
  120. * EOP: codes.FRG
  121.  
  122. *-- Update summary fields and/or calculated fields.
  123. PROCEDURE Upd_Vars
  124. RETURN
  125. * EOP: Upd_Vars
  126.  
  127. *-- Set flag to get out of DO WHILE loop when escape is pressed.
  128. PROCEDURE Prnabort
  129. gl_prntflg=.F.
  130. RETURN
  131. * EOP: Prnabort
  132.  
  133. PROCEDURE Pghead
  134. PRIVATE ll_heading, ln_width
  135. ll_heading = .T.
  136. ln_width = _rmargin - _lmargin
  137. ?
  138. *-- Print HEADING parameter - if it doesn't fit on line one
  139. *-- Value added to gn_length is the last column on line one times two
  140. IF .NOT. gl_plain .AND. gn_length + 158 > ln_width
  141.    ?? gc_heading FUNCTION "I;V"+LTRIM(STR(ln_width))
  142.    ?
  143.    ll_heading = .F.
  144. ENDIF
  145.  
  146. ?? IIF(gl_plain,'',gd_date) AT 0,;
  147.  IIF(gl_plain,'' , "PAGE " ) AT 70,;
  148.  IIF(gl_plain,'',_pageno) PICTURE "999" 
  149.  
  150. *-- Print HEADING parameter - if it fits on line one
  151. IF .NOT. gl_plain .AND. gn_length > 0 .AND. ll_heading
  152.    ?? " "
  153.    ?? gc_heading FUNCTION "I;V"+LTRIM(STR(ln_width-(_pcolno*2)))
  154. ENDIF
  155. ?
  156. ?
  157. ?
  158. RETURN
  159. * EOP: Pghead
  160.  
  161. PROCEDURE Rintro
  162. ?
  163. DEFINE BOX FROM 26 TO 55 HEIGHT 4 DOUBLE
  164. ?
  165. ?? "A-T FURNITURE INDUSTRIES" AT 29
  166. ?
  167. ?? "AREACODE REPORT" AT 33
  168. ?
  169. ?
  170. ?
  171. ?? ;
  172. "══════════════════════════════════════════════════════════════════════";
  173. + "══════════";
  174. AT 0
  175. ?
  176. ?? "CITY" AT 0,;
  177.  "CODE" AT 37
  178. ?
  179. ?? ;
  180. "══════════════════════════════════════════════════════════════════════";
  181. + "══════════";
  182. AT 0
  183. ?
  184. RETURN
  185. * EOP: Rintro
  186.  
  187. PROCEDURE __Detail
  188. IF 3 * gn_pspace < gn_atline - (_pspacing * 4 + 1)
  189.    IF gl_widow .AND. _plineno+3 * gn_pspace > gn_atline + 1
  190.       EJECT PAGE
  191.    ENDIF
  192. ENDIF
  193. DO Upd_Vars
  194. ?? City FUNCTION "T" AT 0,;
  195.  Code PICTURE "999" AT 37
  196. ?
  197. ?
  198. ?
  199. RETURN
  200. * EOP: __Detail
  201.  
  202. PROCEDURE Rsumm
  203. gl_fandl=.F.        && last page finished
  204. ?
  205. RETURN
  206. * EOP: Rsumm
  207.  
  208. PROCEDURE Pgfoot
  209. PRIVATE _box, _pspacing
  210. gl_widow=.F.         && disable widow checking
  211. _pspacing=1
  212. ?
  213. IF .NOT. gl_plain
  214.    _pspacing=gn_pspace
  215.    ?
  216.    ?? "PREPARED BY HUMAN RESOURCES DEPARTMENT" AT 23
  217. ENDIF
  218. EJECT PAGE
  219. *-- is the page number greater than the ending page
  220. IF _pageno > _pepage
  221.    GOTO BOTTOM
  222.    SKIP
  223.    gn_level=0
  224. ENDIF
  225. IF .NOT. gl_plain .AND. gl_fandl
  226.    _pspacing=gn_pspace
  227.    DO Pghead
  228. ENDIF
  229. RETURN
  230. * EOP: Pgfoot
  231.  
  232. *-- Process page break when PLAIN option is used.
  233. PROCEDURE Pgplain
  234. PRIVATE _box
  235. EJECT PAGE
  236. RETURN
  237. * EOP: Pgplain
  238.  
  239. *-- Reset dBASE environment prior to calling report
  240. PROCEDURE Reset
  241. SET SPACE &gc_space.
  242. SET TALK &gc_talk.
  243. ON ESCAPE
  244. ON PAGE
  245. RETURN
  246. * EOP: Reset
  247.  
  248.